﻿using Sustainalytics.DataLayer.Shared;
using Sustainalytics.Entities;
using Sustainalytics.Utils;
using Sustainalytics.Utils.Validation.Interfaces;

namespace Sustainalytics.Portfolios.BL.Validators
{
    using System.Collections.Generic;

    public static class PortfolioValidator
    {
        public static IValidator<Portfolio, string> NameValidator(
            IRepositoryCollection<Portfolio> portfoliorepository,
            PortfolioUserClaims userClaims)
        {
            return new PortfolioNameValidator(portfoliorepository, userClaims);
        }

        public static IValidator<Portfolio, PortfolioUserClaims> Read()
        {
            return new PortfolioReadValidator();
        }

        public static IValidator<Portfolio, PortfolioUserClaims> Write()
        {
            return new PortfolioWriteValidator();
        }


        public static IValidator<SystemPortfolio, IEnumerable<Portfolio>> RelatedUniversesValidator()
        {
            return new PortfolioAssociatedUniversesValidator();
        }
    }
}
